package vip.xiaonuo.smzq.modular.jsxm.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import vip.xiaonuo.smzq.core.utils.TransFormUtil;
import vip.xiaonuo.smzq.modular.dictionary.entity.Cb08Xzqh;
import vip.xiaonuo.smzq.modular.dictionary.mapper.Cb08XzqhMapper;
import vip.xiaonuo.smzq.modular.jsxm.entity.JsxmYfkcKqxx;
import vip.xiaonuo.smzq.modular.jsxm.entity.JsxmYfkcSbb;
import vip.xiaonuo.smzq.modular.jsxm.entity.vo.JsxmDetails;
import vip.xiaonuo.smzq.modular.jsxm.entity.vo.JsxmVo;
import vip.xiaonuo.smzq.modular.jsxm.entity.vo.JsxmfjVo;
import vip.xiaonuo.smzq.modular.jsxm.mapper.JsxmYfkcSbbMapper;
import vip.xiaonuo.smzq.modular.jsxm.service.IJsxmYfkcKqxxService;
import vip.xiaonuo.smzq.modular.jsxm.service.IJsxmYfkcSbbService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import vip.xiaonuo.common.page.CommonPageRequest;
import vip.xiaonuo.smzq.modular.jsxm.service.IJsxmYfkcYfzyclService;
import vip.xiaonuo.smzq.modular.jsxm.service.IPsbaYqclBsclService;
import vip.xiaonuo.smzq.modular.kcl.service.impl.ZbServiceImpl;
import vip.xiaonuo.smzq.modular.psba.entity.vo.Cdfwnzycl;
import vip.xiaonuo.smzq.modular.psba.entity.vo.PsbaGtZbVo;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * 建设项目—压覆重要矿产资源申请表 服务实现类
 *
 * @author sqq
 * @since 2024-05-24
 */
@Service
public class JsxmYfkcSbbServiceImpl extends ServiceImpl<JsxmYfkcSbbMapper, JsxmYfkcSbb> implements IJsxmYfkcSbbService {

    @Resource
    private JsxmYfkcSbbMapper jsxmYfkcSbbMapper;
    @Resource
    private Cb08XzqhMapper cb08XzqhMapper;//行政区划
    @Resource
    private IJsxmYfkcKqxxService iJsxmYfkcKqxxService;//压覆矿产资源情况
    @Resource
    private IJsxmYfkcYfzyclService iJsxmYfkcYfzyclService;//建设项目-资源储量
    @Resource
    private IPsbaYqclBsclService iPsbaYqclBsclService; //附件

    @Override
    public Page<JsxmYfkcSbb> page(JsxmYfkcSbb jsxmYfkcSbb) {
        QueryWrapper<JsxmYfkcSbb> queryWrapper = new QueryWrapper<>();
        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
    }

    @Override
    public Page<JsxmVo> getJsxmYfkcSbbPage(long current, long size, String nd, String xzqh) {
        Page<JsxmYfkcSbb> page = new Page<>(current, size);
        Page<JsxmVo> jsxmVopage = new Page<>();
        QueryWrapper<JsxmYfkcSbb> queryWrapper = new QueryWrapper<>();
        if (nd != null && !nd.equals("")) {
            queryWrapper.like("psrq", nd).or().like("psbarq", nd);
        }
        if (xzqh != null && !xzqh.equals("")) {
            xzqh = xzqh.replaceAll("0+$", "");
            queryWrapper.like("szxzq", xzqh);
        }

        page = jsxmYfkcSbbMapper.selectPage(page, queryWrapper);
        List<JsxmYfkcSbb> list = page.getRecords();
        List<JsxmVo> jsxmVoList = new ArrayList<>();
        for (JsxmYfkcSbb jsxmYfkcSbb : list) {
            JsxmVo jsxmVo = new JsxmVo();
            BeanUtil.copyProperties(jsxmYfkcSbb, jsxmVo);

            if (jsxmYfkcSbb.getSzxzq() != null && !jsxmYfkcSbb.getSzxzq().equals("")) {
                //县
                QueryWrapper<Cb08Xzqh> xianWrapper = new QueryWrapper<>();
                xianWrapper.eq("dm", Integer.parseInt(jsxmYfkcSbb.getSzxzq()));
                Cb08Xzqh xian = cb08XzqhMapper.selectOne(xianWrapper);
                jsxmVo.setXzqhmc(xian.getMc());
            }
            jsxmVoList.add(jsxmVo);
        }

        jsxmVopage.setTotal(page.getTotal());
        jsxmVopage.setRecords(jsxmVoList);
        jsxmVopage.setCurrent(page.getCurrent());
        jsxmVopage.setSize(page.getSize());

        return jsxmVopage;
    }

    @Override
    public JsxmDetails getJsxmDetails(String jsxmbh) {
        JsxmDetails jsxmDetails = new JsxmDetails();

        //压覆重要矿产资源申请
        JsxmYfkcSbb jsxmYfkcSbb = jsxmYfkcSbbMapper.selectOne(new QueryWrapper<JsxmYfkcSbb>().eq("jsxmbh", jsxmbh));
        if (jsxmYfkcSbb != null) {
            JsxmVo jsxmVo = new JsxmVo();
            BeanUtil.copyProperties(jsxmYfkcSbb, jsxmVo);

            if (jsxmYfkcSbb.getSzxzq() != null && !jsxmYfkcSbb.getSzxzq().equals("")) {
                //县
                QueryWrapper<Cb08Xzqh> xianWrapper = new QueryWrapper<>();
                xianWrapper.eq("dm", Integer.parseInt(jsxmYfkcSbb.getSzxzq()));
                Cb08Xzqh xian = cb08XzqhMapper.selectOne(xianWrapper);
                jsxmVo.setXzqhmc(xian.getMc());
            }
            if (jsxmVo.getJsxmydzb() != null && !jsxmVo.getJsxmydzb().equals("")) {
                //压覆项目范围坐标
                jsxmVo.setJszbCoordinatesList(new ZbServiceImpl().getKqfwCoordinates(jsxmVo.getJsxmydzb()));
                //压覆面积
                jsxmVo.setWktcljsmj(TransFormUtil.CoordinateDisposeWKT3(jsxmVo.getJsxmydzb()));
            }
            jsxmDetails.setJsxmVo(jsxmVo);
        }
        //压覆矿产资源情况
        List<JsxmYfkcKqxx> jsxmYfkcKqxxList = iJsxmYfkcKqxxService.getJsxmYfkcKqxx(jsxmbh);
        if (jsxmYfkcKqxxList != null&&jsxmYfkcKqxxList.size()>0) {
            jsxmDetails.setJsxmYfkcKqxxList(jsxmYfkcKqxxList);
        }

        //矿产资源储量估算范围
        PsbaGtZbVo psbaGtZbVo = getPsbaGtZbVo(jsxmbh);
        if (psbaGtZbVo != null) {
            jsxmDetails.setPsbaGtZbVo(psbaGtZbVo);
        }


        //资源储量
        List<Cdfwnzycl> cdfwnzyclList = iJsxmYfkcYfzyclService.getCdfwnzyclList(jsxmbh);
        if (cdfwnzyclList != null && cdfwnzyclList.size() > 0) {
            jsxmDetails.setCdfwnzyclList(cdfwnzyclList);
        }

        //附件
        JsxmfjVo jsxmfjVo = iPsbaYqclBsclService.getJsxmfjVo(jsxmbh);
        if (jsxmfjVo != null) {
            jsxmDetails.setJsxmfjVo(jsxmfjVo);
        }

        return jsxmDetails;
    }

    /**
     * 获取矿产资源储量估算范围
     * @param jsxmbh
     * @return
     */
    public PsbaGtZbVo getPsbaGtZbVo(String jsxmbh) {
        PsbaGtZbVo jsxmVo = new PsbaGtZbVo();
        try {
            JsxmYfkcSbb jsxmYfkcSbb = jsxmYfkcSbbMapper.selectOne(new QueryWrapper<JsxmYfkcSbb>().eq("jsxmbh", jsxmbh));
            if (jsxmYfkcSbb != null) {
                if (jsxmYfkcSbb.getJsxmydzb() != null && !jsxmYfkcSbb.getJsxmydzb().equals("")) {
                    //建设项目坐标
                    jsxmVo.setJszbCoordinatesList(new ZbServiceImpl().getKqfwCoordinates(jsxmYfkcSbb.getJsxmydzb()));
                    //建设面积
                    jsxmVo.setWktcljsmj(TransFormUtil.CoordinateDisposeWKT3(jsxmYfkcSbb.getJsxmydzb()));
                }
                if (jsxmYfkcSbb.getYfclfwzb() != null && !jsxmYfkcSbb.getYfclfwzb().equals("")) {
                    //压覆坐标
                    jsxmVo.setYfzbCoordinatesList(new ZbServiceImpl().getKqfwCoordinates(jsxmYfkcSbb.getYfclfwzb()));
                    //压覆坐标
                    jsxmVo.setWktyfmj(TransFormUtil.CoordinateDisposeWKT3(jsxmYfkcSbb.getYfclfwzb()));
                }

                return jsxmVo;

            }

        } catch (Exception e) {

        }

        return null;
    }


}
